package com.wty.design.creational.singleton;

/**
 * @Author wangtengyu
 * @Create 2018-09-18-10:19
 */
public class LazySingleton {
    private static LazySingleton instance =null;

    //单例模式一定要把无参构造私有化
    private LazySingleton(){
        if (instance!=null){
            throw new RuntimeException("单例构造器禁止反射");
        }
    }

    //这个方法是静态的，并且一般用instance命名，这里是为了方便区分。
    public static LazySingleton getInstance(){
        if (instance ==null){
            //线程1执行到这里还没执行完成后，线程2就执行到了if (instance==null)，同样也进入到了这里，创建了两个对象
            instance =new LazySingleton();
        }
        return instance;
    }
}
